Mobile app development has traditionally involved developers building user interfaces in native code, i.e., code that runs directly on the operating system of the mobile device. This is a time-consuming and inflexible process, requiring engineers to implement the same views and logic on multiple platforms, especially if these views are displaying remote data that needs to be rendered consistently across devices.
Recently, tools like Facebook's React Native and Titanium's Appcelerator have been developed which allow developers to write apps for mobile devices in JavaScript. The JavaScript runs on the mobile device and these tools effect the transformation between the JavaScript and the device's native code. This approach has the potential to accelerate app development in that many developers are familiar with coding in JavaScript, and JavaScript is a dynamic language that doesn't require compilation before code can be tested.
Unfortunately, execution of JavaScript on mobile devices is inefficient compared to native code. In addition, JavaScript can be vulnerable from a security perspective, particularly for executable code written by third parties or transmitted from remote platforms.